package com.woniuxy.springmvc.exception;

import bean.ResultMsg;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author linke
 * @version 1.0
 * @className: ExceptionHandle
 * @description: 异常处理控制器
 * @date 2021/11/14 22:22
 *
 * @ControllerAdvice 是Spring3.2提供的新注解,它是一个Controller增强器,
 * 可对controller中被 @RequestMapping注解的方法加一些逻辑处理。最常用的就是异常处理
 */
@ControllerAdvice
public class ExceptionHandle {

    /**
     * 注解用来指明异常的处理类型，即如果这里指定为 NullpointerException，则数组越界异常就不会进到这个方法中来。
     * @ExceptionHandler 标记下面的方法，就是一个异常处理方法
     * @param e
     * @return
     */
    @ExceptionHandler
    public ModelAndView handler(Exception e){
        ResultMsg msg = new ResultMsg("10000","未知错误");

        ModelAndView mv = new ModelAndView();
        if(e instanceof NullPointerException){
            msg.setCode("10001");
            msg.setMsg("系统繁忙，请稍后重试！");
        }
        //下面可以继续判断异常的种类，并修改提示信息

        mv.addObject("ex",msg);
        mv.setViewName("errors/exception");
        return mv;
    }

}